package a_erfenchazhao;

/**
 * @ClassName JiChuXieFa
 * @Description
 * @Author Zhang Li Tao
 * @Date 2024/3/8
 * @Version 1.0
 **/
public class A_JiChuXieFa {
    public static void main(String[] args) {
        // 二分查找 只针对于已排序数组 未找到返回-1
        int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8};
        int target = 2;

        // 设置左右边界
        int leftIndex = 0;
        int rightIndex = array.length - 1;

        // 设置条件 左边界不在右边界右边
        while (leftIndex <= rightIndex) {
            // 中间索引 左右边界索引之和除以2的向下int
            int middleIndex = (leftIndex + rightIndex) >>> 1;

            if (target < array[middleIndex]) { // 数组左半部分
                rightIndex = middleIndex - 1;
            } else if (array[middleIndex] < target) { // 数组右半部分
                leftIndex = middleIndex + 1;
            } else { // 数组中间索引值等于目标值 程序结束
                System.out.println(middleIndex);
                return;
            }
        }

        // while结束 还没找到 即不存在目标值 返回-1
        System.out.println(-1);
    }
}
